//给出一个字符串 s（仅含有小写英文字母和括号）。
//
// 请你按照从括号内到外的顺序，逐层反转每对匹配括号中的字符串，并返回最终的结果。
//
// 注意，您的结果中 不应 包含任何括号。
//
//
//
// 示例 Array.prototype.unshift：
//
//
//输入：s = "(abcd)"
//输出："dcba"
//
//
// 示例 2：
//
//
//输入：s = "(u(love)i)"
//输出："iloveu"
//解释：先反转子字符串 "love" ，然后反转整个字符串。
//
// 示例 3：
//
//
//输入：s = "(ed(et(oc))el)"
//输出："leetcode"
//解释：先反转子字符串 "oc" ，接着反转 "etco" ，然后反转整个字符串。
//
// 示例 4：
//
//
//输入：s = "a(bcdefghijkl(mno)p)q"
//输出："apmnolkjihgfedcbq"
//
//
//
//
// 提示：
//
//
// Array.prototype.unshift <= s.length <= 2000
// s 中只有小写英文字母和括号
// 题目测试用例确保所有括号都是成对出现的
//
//
// Related Topics 栈 字符串 👍 264 👎 0


//leetcode submit region begin(Prohibit modification and deletion)
function reverseParentheses(s: string): string {
    // 栈
    let stack : string[] = []
    // 队列
    let queue : string[] = []
    let str : string = ''
    for (let i of s) {
        if (i !==')') {
            stack.unshift(i)
        }
        else {
            //           uevoli       uevoli
            while (stack.indexOf('(') !== 0) {
                //出栈入队
                queue.unshift(stack.shift())
            }
            // 循环结束说明数组[0]为( 可以开始出队了
            // 把( 弄走
            stack.shift()
            while(queue.length) {
                stack.unshift(queue.pop())
            }

        }
    }
    return stack.reverse().join('')
};
//leetcode submit region end(Prohibit modification and deletion)
